iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
1

昨天跟各位一起探索了如何儲存對話中的資料,但是大家有沒有好奇究竟那些資料是儲存在哪裡,我可以改變儲存地點嗎?

那就讓我們繼續看下去吧!!

一些小知識

https://ithelp.ithome.com.tw/upload/images/20201007/20129689NVaVBo4ajR.jpg

這是官方範例 python 程式碼45.state-management 中的 app.py,我們可以看到 UserState() 以及 ConversationState() 括號內都填上 Memory,這就是整個 bot 對話儲存對話資料以及 log 的地方。

如果是用 Bot Emulator 測試 chatbot,則 Memory = 電腦的 Memory,若是部署到 App Service 的話,則是 App Service 自己的 Memory。
https://ithelp.ithome.com.tw/upload/images/20201007/20129689zoXktBimYb.jpg

官方目前支援的有三種

  • In-memory storage: 儲存在記憶體內部儲存體 - 開發、輕度使用試用。若是在地端測試 Chatbot,則每次 Bot 重新啟動時,就會清除先前資料。
  • Azure Blob Storage
  • Azure Cosmos DB

程式碼修改

1.1 在 Azure Portal 上建立一個 Storage Account

1.2 建立好之後,再到 Storage Account 建立一個 Container
https://ithelp.ithome.com.tw/upload/images/20201007/20129689LKGLjolnxg.jpg

1.3 記下你的 Storage Account 的名稱以及 Container 的名稱

1.4 再去複製 Access key
https://ithelp.ithome.com.tw/upload/images/20201007/20129689ATxfFTMkct.jpg

1.5 安裝以下 python 套件

pip install botbuilder-azure

1.6 在 app.py 新增以下程式碼
https://ithelp.ithome.com.tw/upload/images/20201007/20129689Jf0lAWgIQq.jpg

from botbuilder.azure import BlobStorage, BlobStorageSettings

https://ithelp.ithome.com.tw/upload/images/20201007/2012968905ikxIcONZ.jpg

BLOB_SETTINGS = BlobStorageSettings(
    container_name="<CONTAINER 的名稱>",
    account_name= "<STORAGE ACCOUNT 的名稱>",
    connection_string="<剛剛複製的 KEY>"
    )
MEMORY = BlobStorage(BLOB_SETTINGS)

1.7 再次使用 chatbot,則會在 Container 多看到一個資料夾,代表就是成功了


上一篇
【Day21】如何讓 Chatbot 儲存與使用者交談的資料
下一篇
【Day23】Microsoft Bot Framework 中 Dialog 的概念及應用
系列文
利用Python開發一個以Azure服務為基底的Chat Bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言